import sys
import os
import win32com.client
import argparse
from pathlib import Path

def remove_readonly(file_path):
    """如果文件是只读的，先去掉只读属性"""
    try:
        if not os.access(file_path, os.W_OK):
            os.chmod(file_path, 0o666)  # 添加写权限
            print(f"已将文件权限修改为可写: {file_path}")
    except Exception as e:
        print(f"警告: 无法修改文件权限: {e}")

def main():
    # 使用argparse模块处理命令行参数
    parser = argparse.ArgumentParser(description='处理Word文档并接受所有修订')
    parser.add_argument('input_path', help='输入Word文档路径')
    args = parser.parse_args()
    
    # 将路径转换为绝对路径
    input_path = os.path.abspath(args.input_path)
    
    
    # 验证文件是否存在
    if not os.path.exists(input_path):
        print(f"错误: 文件不存在: {input_path}")
        # 检查目录是否存在
        dir_path = os.path.dirname(input_path)
        if not os.path.exists(dir_path):
            print(f"错误: 目录不存在: {dir_path}")
        sys.exit(1)
    
    # 检查文件是否为docx或doc格式
    if not input_path.lower().endswith(('.docx', '.doc')):
        print(f"错误: 文件不是Word文档: {input_path}")
        sys.exit(1)
    
    print(f"正在处理文件: {input_path}")
    
    try:
        # 去除只读属性
        remove_readonly(input_path)

        # 打开 Word 应用
        word = win32com.client.Dispatch("Word.Application")
        word.Visible = False  # 不显示 Word 窗口

        # 打开文档（设置 ReadOnly=False，确保可以写入）
        print("尝试打开文档...")
        doc = word.Documents.Open(input_path, ReadOnly=False)
        print("文档已成功打开")

        # 接受所有修订
        print("正在接受所有修订...")
        doc.AcceptAllRevisions()

        # 保存并关闭
        print("保存文档...")
        doc.Save()
        print("文档已保存")
        
        doc.Close(False)
        word.Quit()
        
        print(f"成功处理文件: {input_path}")
        
    except Exception as e:
        print(f"处理文件时出错: {e}")
        # 确保Word进程被关闭
        try:
            word.Quit()
        except:
            pass
        sys.exit(1)

if __name__ == "__main__":
    main()